/**
 * This file is dedicated to the declarations of the prototypes
 * specific to character information.
 * 
 * @author Levester Chaney
 * @version 0.0.1
 */

#include "abstractTypes.h"
#include <cstdlib>

/////////////////////////////////////////////////////////////////////
//							Concrete classes					   //
/////////////////////////////////////////////////////////////////////
// Item declarations go here.
/**
 * The class to define the "" item.
 */
class armor : public item
{
private:
	// instance variables here
public:
	/**
	 * Default constructor.
	 */
	armor();

	/**
	 * Destructor.
	 */
	~armor();

	/**
	 * @Overrides
	 * Defines the functionality for the flight skill. This function may 
	 * disappear it is really just for me to test the properties of
	 * Visual Studio.
	 */
	void action();
};

// Ability declarations go here.
/**
 * The class to define the flight skill.
 */
class flight : public ability
{
private:
	// instance variables here
public:
	/**
	 * Default constructor.
	 */
	flight();

	/**
	 * Destructor.
	 */
	~flight();

	/**
	 * @Overrides
	 * Defines the functionality for the flight skill. This function may 
	 * disappear it is really just for me to test the properties of
	 * Visual Studio.
	 */
	void action();
};

// Race declarations go here.
/**
 * The class to define the human race within the game.
 */
class human : public player
{
private:
	// instance variables here
public:
	/**
	 * Default constructor.
	 */
	human();

	/**
	 * Constructor to generate a new instance of human.
	 */
	human(char* name);

	/**
	 * Constructor to generate a new instance of human.
	 */
	human(char* name, classType birthClass);

	/**
	 * Constructor to generate a new instance of human.
	 */
	human(char* name, classType birthClass, char* birthCity);

	/**
	 * Destructor.
	 */
	~human();

	/**
	 * @Overrides
	 * Defines the functionality for when a human performs action. This
	 * function may disappear it is really just for me to test the properties
	 * of Visual Studio.
	 */
	void action();
};

/**
 * The class to define the vampire race within the game.
 */
class vampire : public player
{
private:
	// instance variables here
public:
	/**
	 * Default constructor.
	 */
	vampire();

	/**
	 * Constructor to generate a new instance of vampire.
	 */
	vampire(char* name);

	/**
	 * Constructor to generate a new instance of vampire.
	 */
	vampire(char* name, classType birthClass);

	/**
	 * Constructor to generate a new instance of vampire.
	 */
	vampire(char* name, classType birthClass, char* birthCity);

	/**
	 * Destructor.
	 */
	~vampire();

	/**
	 * @Overrides
	 * Defines the functionality for when a vampire performs action. This
	 * function may disappear it is really just for me to test the properties
	 * of Visual Studio.
	 */
	void action();
};
